\documentclass[a4paper,10pt,twoside]{article}
\usepackage[left=2.5cm,top=3.5cm,right=2.5cm,bottom=4cm]{geometry}

\usepackage[latin1]{inputenc}
\usepackage[spanish, activeacute]{babel}
\usepackage{graphicx}
\usepackage{amssymb}

\def\ra {\textbf{\textit{CombinatoryEngine}}}

\title{
    \includegraphics[width=50pt,height=70pt]{unrc.jpg}\\
    \begin{large}\textsc{Tesis}\\ \end{large}
    \small
        \textbf{Departamento de Computaci'on} \\
        \textbf{F.C.E.F.Q. y N.} \\
        \textbf{U.N.R.C.}
     \\ [4cm]
    \begin{Huge}\ra        \end{Huge} \\
    \small Informe De Dise'no\\[3cm]
}

\author{\textbf{Diaz}, \textit{Diego Alejandro} \hspace{4cm} \textbf{Bettiol}, \textit{Favio}\\
        \small{\texttt{diazdiego86@gmail.com}}  \hspace{6cm}  \small{\texttt{favio.bettiol@gmail.com}} \\[3cm]
}

\date{27 de Junio de 2010}

\begin{document}

    \pagestyle{myheadings}
    \markboth{CombinatoryEngine}{Bettiol - Diaz}  
    
    \maketitle
    \newpage
    \tableofcontents
    \newpage

	\section{Introducci'on}
En el presente trabajo se especifican las responsabilidades de las principales clases que confeccionan un motor combinatorio. Este 'ultimo constituye solo una de las capas de un proyecto, interactuando as'i con las siguientes: L3-Recabs y L5-Application.

A continuaci'on se explica la interacci'on del motor combinatorio con las capas anteriormente mencionadas:
	
    \section{Arquitectura}



        \subsection{Capas}
            \begin{itemize}
                \item \textbf{Capa L4:} Esta capa brinda un servicio de procesamiento para problemas que requieran de un motor combinatorio.
                
                \item \textbf{Capa L5:} Esta capa es esclava de la capa L4. Sus responsabilidades son:
                \begin{itemize}
				    \item [$\checkmark$] Brindar a L4 pol\'itica de Combinaci\'on.
				    \item [$\checkmark$] Brindar a L4 la pol\'itica de Poda.
				    \item [$\checkmark$] Proveer a L4 el nodo/estado inicial inicial de la aplicaci\'on.
				    \item [$\checkmark$] Proveer scoring para un nodo/estado.
                \end{itemize}
            \end{itemize}
                
        
    \section{Capa L4}
    A continuaci'on se detallan las responsabilidades de cada una de las interfaces provistas en el dise'no de \ra.
    
        \subsection{\texttt{L4Node}}
        \textit{Responsabilidad:} Brindar servicios para el procesamiento de un functor recursivo provisto por L3:
		\begin{itemize}
		     \item [$\checkmark$] Proveer funciones al observador para la creaci'on de nodos hijos (a partir de una nueva combinaci'on) y la vinculaci'on de los mismos al 'arbol de ejecuci'on.
		     \item [$\checkmark$] Proveer una funci'on score para un nodo.
		     \item [$\checkmark$] Observar la pol'itica de combinaci'on.

		\end{itemize}
	
	\textit{Colaboradores:} 
		\begin{itemize}
			\item [$\checkmark$] \texttt{PrunePolicy}: Decide si es conveniente procesar una combinaci'on.
			\item [$\checkmark$] \texttt{CombinationPolicy}. Realiza las combinaciones de elementos definidos por la capa L5, para luego, a partir de ellas, obtener los hijos.\\ 
		\end{itemize}		
        
        

	\subsection{\texttt{L4Application}}
        \textit{Responsabilidad:} Es el encargado de proveer los elementos iniciales para empezar la ejecuci'on del nodo inicial.
		\begin{itemize}
			\item [$\checkmark$] Proveer el nodo inicial de la aplicaci'on a la capa L3.
			\item [$\checkmark$] Proveer a L4Node la pol'itica de poda.
		\end{itemize}

        
 
        
        \subsection{\texttt{Interfaz PrunePolicy}}
        \textit{Responsabilidad:}Decide cu'ando una combinaci'on es 'util para la aplicaci'on.

        \subsection{\texttt{CombinationPolicy}}
        \textit{Responsabilidad:} Dado un conjunto de elementos a combinar, realiza las posibles combinaciones de acuerdo a su pol'itica.
		 
	 \textit{Colaborador:} \texttt{CombinationObserver}. Decide que hacer con cada combinaci'on nueva encontrada .\\   

\end{document}












Motor combinatorio con L5:
	El motor combinatorio le provee a L5 una forma de ejecutar una aplicacion que tenga una o mas de las siguientes necesidades:
	un motor combinatorio para generar árboles de combinaciones
	mecanismos de poda de esos árboles
	un sistema de puntuación de combinaciones (ranking)

Para esto es necesario que la aplicacion (L5) provea cierta informacion y servicios:
	+ Brindar una forma de combinar elementos
	+ Brindar una forma







